# 理论:如何为编写声明文件
虽然 TypeScript 已经逐渐进入主流,但是市面上大部分库还是以 JavaScript 编写的,这个时候由于库没有像 TS 一样定义类型,因此需要一个声明文件来帮助库的使用者来获取库的类型提示,比如 JQuery 虽然是 js 编写的但是如果引入 @types/jquery 就可以获得以下效果:

# 使用第三方 d.ts
Github 上有一个库 DefinitelyTyped 它定义了市面上主流的JavaScript 库的 d.ts ,而且我们可以很方便地用 npm 引入这些 d.ts。
比如我们要安装 JQuery 的 d.ts:
npm install @types/jquery -save
@前端进阶之旅: 代码已经复制到剪贴板
在日常开发中我们建议直接使用 DefinitelyTyped 定义的 d.ts,但是依然有些情况下我们需要给自己的库编写 d.ts,或者没有第三方的 d.ts 提供,这个时候就需要什么自己编写 d.ts 文件了.
# 编写 d.ts 文件
关键字 declare 表示声明的意思,我们可以用它来做出各种声明:
declare var声明全局变量declare function声明全局方法declare class声明全局类declare enum声明全局枚举类型declare namespace声明(含有子属性的)全局对象interface和type声明全局类型
# 声明变量
declare var/let/const,全局变量的声明可以说是最简单的了,虽然 var/let/const 都可以使用的,但是通常情况下全局变量是不允许改动的,大多数情况下还是以 const 为主:
// src/jQuery.d.ts
declare const jQuery: (selector: string) => any;
@前端进阶之旅: 代码已经复制到剪贴板
# 声明函数
declare function 用来声明全局函数:
// src/jQuery.d.ts
declare function jQuery(selector: string): any;
@前端进阶之旅: 代码已经复制到剪贴板
# 声明类
declare class 用于声明全局类
// src/Person.d.ts
declare class Person {
name: string;
constructor(name: string);
say(): string;
}
@前端进阶之旅: 代
